package mutacion;

import utils.SRandom;
import gen.GenP2;
import cromosoma.Cromosoma;

public class MutacionIntercambio implements IMutacion {

	@Override
	public void mutacion(Cromosoma c, double probMut) {
		
		boolean mutado;
		int longitudCromosoma = c.get_longitudCromosoma();
		
			mutado=false;
			GenP2[] genes =(GenP2[]) c.get_genes();
			//Para cada gen
			for (int j=0; j < genes.length; j++)
			{
				
				if (SRandom.nextDouble() < probMut )
				{
					mutado = true;
					int pos1,pos2, aux;
					
					pos1 = SRandom.nextInt(longitudCromosoma);
					pos2 = SRandom.nextInt(longitudCromosoma);
					
					//Intercambio;
					aux = (Integer) genes[pos1].getGen();
					genes[pos1].setGen((Integer) genes[pos2].getGen());
					genes[pos2].setGen(aux);
					
				}
			}
			if (mutado) c.set_aptitud(c.evalua());	
	}

}
